package com.pjmike.netty.server.http.web;

import com.pjmike.netty.controller.ExceptionController;
import com.pjmike.netty.server.http.web.core.WebServer;
import com.pjmike.netty.server.http.web.rest.interceptor.CorsInterceptor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
@Slf4j
public class HttpServer {
    @Value("${netty.httpserver.port}")
    private int port;
    @Value("${netty.httpserver.content-length}")
    private int contentlength;
    @Value("${netty.httpserver.scanpackage}")
    private String scanpackage;

    @PostConstruct
    public  void webServer() {
        // 忽略指定url
        WebServer.getIgnoreUrls().add("/favicon.ico");

        // 全局异常处理
        WebServer.setExceptionHandler(new ExceptionController());

        // 设置监听端口号
        WebServer server = new WebServer(port);

        // 设置Http最大内容长度（默认 为10M）
        server.setMaxContentLength(contentlength);
//        server.setMaxContentLength(1024*1024*50);

        // 设置Controller所在包

        server.setControllerBasePackage(scanpackage);
//        server.setControllerBasePackage("com.pjmike.netty.controller");

        // 添加拦截器，按照添加的顺序执行。
        // 跨域拦截器
        server.addInterceptor(new CorsInterceptor(), "/不用拦截的url");

        server.start();
    }
}
